package org.example;

import cn.hutool.core.io.FileUtil;
import cn.hutool.core.io.IoUtil;
import org.jsoup.Connection;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.junit.Test;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.IOException;

public class JsoupTest {

    @Test
    public void  test01() throws IOException {
        String url = "http://tmooc.cn/";
        //以GET方式请求URL地址，并将 响应的网页内容封装成Document对象返回
        Document doc = Jsoup.connect(url).get();
        //System.out.println(doc.html());
        //ID选择器：#id属性值
        //Element e = doc.getElementById("js_slide_nav");
        //Element e = doc.selectFirst("#js_slide_nav");
       //System.out.println(e.html());

//        //class选择器：.class属性
//        Element e = doc.selectFirst(".slide-nav");
//        System.out.println(e.outerHtml());
//
        //子元素选择器：.slide-nav>li>a
//        Elements es = doc.select(".slide-nav>li>a");
//        es.forEach(e -> System.out.println(e));

        //派生（后代）选择器：.slide-nav a
//        Elements es = doc.select(".slide-nav a");
//        es.forEach(element -> System.out.println(element));

        //属性选择器：[属性名='属性值']
        //[属性名 ^='值']：以指定的值开头
        //[属性名 $='值']：以指定的值结尾
        //[属性名 *='值']：包含指定的值
        //[属性名 ~='正则表达式']：属性值是否匹配正则表达式
        Elements es =
                doc.select("[placeholder *='您']");
        es.forEach(element -> System.out.println(element));
    }

    @Test
    public void test02() throws IOException {
        String url = "http://tmooc.cn/";
        //以GET方式请求URL地址，并将 响应的网页内容封装成Document对象返回
        Document doc = Jsoup.connect(url).get();

        Element e = doc.selectFirst(".slide-nav");
        //获取元素中的HTML内容
        //System.out.println(e.outerHtml());
        //System.out.println(e.html());
        //获取元素中的纯普通文本
        //System.out.println(e.text());

        //获取元素的属性值
       // System.out.println(e.attr("class"));
    }

    @Test
    public void  test03() throws IOException{
        String url = "http://cdn.tmooc.cn/bsfile//imgad///e10769886ad44e7882721da63d9887cc.jpg";
        //Jsoup在请求时，Content-Type内容类型默认为：text/html
        //因此在访问图片或视频等资源时，会报错的。解决的办法是，
        //让Jsoup忽略Connect-Type内容类型即可
        Connection.Response response = Jsoup.connect(url)
                .ignoreContentType(true)
                .execute();
        //获取服务端响应的输入流
        BufferedInputStream in = response.bodyStream();
        //创建一个本地输出流
        BufferedOutputStream out = FileUtil.getOutputStream("image.jpg");
        //复制
        IoUtil.copy(in,out);
        //关闭流，释放资源
        in.close();
        out.close();

    }
}
